package com.jiyun.jiyunmall.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jiyun.jiyunmall.common.service.impl.CrudServiceImpl;
import com.jiyun.jiyunmall.product.dao.AttrGroupDao;
import com.jiyun.jiyunmall.product.dto.AttrGroupDTO;
import com.jiyun.jiyunmall.product.dto.SpuItemAttrGroupVo;
import com.jiyun.jiyunmall.product.entity.AttrGroupEntity;
import com.jiyun.jiyunmall.product.service.AttrGroupService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 属性分组
 *
 * @author boge 71164376@qq.com
 * @since 1.0.0 2022-07-12
 */
@Service
public class AttrGroupServiceImpl extends CrudServiceImpl<AttrGroupDao, AttrGroupEntity, AttrGroupDTO> implements AttrGroupService {
    // 这个方法是逆向工程，给你预留的用于条件拼接的方法，你可理解为，在这里面拼接查询条件
    // controller调用逆向工程生成的page分页查询，其他查询自动帮你搞定，这个条件，你在这个方法里面写就行了
    // 它是重写的一个方法，在多态情况下，调用的是子类的该方法，所以你这里面写的条件是可以生效的
    // 当然如果这个你不满意，你也可以重新另外定义一个方法，自己按照以前的写法去写一个分页查询也是没有问题
    @Override
    public QueryWrapper<AttrGroupEntity> getWrapper(Map<String, Object> params){
        String id = (String)params.get("attrGroupId");

        QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<>();
        wrapper.eq(StringUtils.isNotBlank(id), "attr_group_id", id);
        wrapper.like(StringUtils.isNotBlank(id), "attr_group_name", id);
        if(params.get("categoryId")!=null && Integer.parseInt(params.get("categoryId").toString())!=0){
            Integer catId = Integer.parseInt(params.get("categoryId").toString());
            wrapper.eq("catelog_id", catId);
        }
        return wrapper;
    }

@Autowired
AttrGroupDao attrGroupDao;
    @Override
    public List<SpuItemAttrGroupVo> getAttrGroupWithAttrsBySpuId(Long spuId, Long catalogId) {
        // 查询条件，根据catalogId分类Id和当前商品的spuId，去查询基本属性
        return attrGroupDao.getAttrGroupWithAttrsBySpuId( spuId,catalogId);
    }
}